package com.k8sops.backend.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.k8sops.backend.model.entity.DOSRelease;

/**
 * DOSRelease服务接口
 */
public interface DOSReleaseService extends IService<DOSRelease> {
    
    /**
     * 保存部署信息
     * @param dosRelease 部署信息
     * @return 是否保存成功
     */
    boolean saveDeployment(DOSRelease dosRelease);
    
    /**
     * 分页查询Release列表
     * 
     * @param page 分页参数
     * @param projectId 项目ID
     * @param moduleId 模块ID
     * @param envType 环境类型
     * @param clusterId 集群ID
     * @param namespaceId 命名空间ID
     * @return 分页结果
     */
    IPage<DOSRelease> pageReleases(Page<DOSRelease> page, Integer projectId, Integer moduleId, 
                                   Integer envType, Integer clusterId, Integer namespaceId);
    
    /**
     * 分页查询Release列表，并关联项目和项目组信息
     * 
     * @param page 分页参数
     * @param projectId 项目ID
     * @param moduleId 模块ID
     * @param envType 环境类型
     * @param clusterId 集群ID
     * @param namespaceId 命名空间ID
     * @param releaseName Release名称
     * @param projectGroupId 项目组ID
     * @return 分页结果，包含项目和项目组信息
     */
    IPage<DOSRelease> pageReleasesWithProjectInfo(Page<DOSRelease> page, Integer projectId, Integer moduleId, 
                                   Integer envType, Integer clusterId, String namespace, String releaseName, Integer projectGroupId);
    
    /**
     * 根据releaseName检查是否已存在部署
     * 
     * @param releaseName Release名称
     * @return 如果存在返回true，否则返回false
     */
    boolean existsByReleaseName(String releaseName);
}
